home *** CD-ROM | disk | FTP | other *** search
- ;;=======================================================================;;
- ;; ;;
- ;; Scrolling Routines -- main program ;;
- ;; ;;
- ;; All other INC files are included here. The main routines for the ;;
- ;; frame-by-frame execution loop are also here. Finally I tried to keep ;;
- ;; global variables stored in this file as well. ;;
- ;; ;;
- ;;=======================================================================;;
- dosseg
- .model small
- .386
-
- .code
- extrn ZTimerOn:far, ZTimerOff:far, ZTimerReport:far
-
- INCLUDE constant.inc
-
-
- DW_TABLE MACRO inc,num
- count = 0
- number = 0
- WHILE (count LT num)
- DW number
- count = count + 1
- number = number + inc
- ENDM
- ENDM
-
- DOSPRINT MACRO st
- mov ah,9
- mov dx,st
- int 21h
- ENDM
-
- EVEN
- Mult320 label WORD
- MultBufWidth label WORD
- DW_TABLE 320,200
- MultVirtWidth label WORD
- DW_TABLE (VIRTUAL_WIDTH/4),200
-
- INCLUDE palette.inc
- INCLUDE keyb.inc
- INCLUDE modex.inc
- INCLUDE page.inc
- INCLUDE init.inc
- INCLUDE map.inc
- ;INCLUDE sprite.inc NOT FOR NOW
- INCLUDE scroll.inc
-
- ;; Various segments that need to be filled in later...
- EVEN
- segVideo dw 0A000h ; videoram segment
- segText dw 0B800h ; text segment
- segMap dw -1 ; Map info segment
- segTiles dw -1 ; Tile bitmap segment
- segBuffer dw -1 ; Local 320x200 buffer segment
- segCode dw -1 ; Code segment
- segPSP dw -1 ; PSP segment
- segPalette dw -1 ; Palette segment
- segTextPal dw -1 ; Saved text palette
-
- EVEN
- bDoTransition db 0
-
- ;; This routine is called for each frame.
- ;; Right now it just scrolls, but later all sprite animation would
- ;; occur here too.
- EVEN
- OneFrame PROC near
- call Scroll ; Scrolls the screen
- ; call AnimateSprites ; prepares sprites on drawpage
- jmp FlipPage ; shows drawpage...
- ; no RET necessary
- OneFrame ENDP
-
- ;; Each frame -- call the frame motion code, then check for keyhit.
- EVEN
- MainLoop PROC NEAR
- next_frame: call OneFrame
- JNKEY next_frame
- JKEYP kESC,all_done ; ESC -> quit, always
- call kprocCur
- mov al,bDoTransition
- cmp al,0
- je next_frame
- transition: FLASH_OFF 16,segPalette
- mov bDoTransition,0
- mov ax,1
- sub ax,nMap
- mov nMap,ax ; Flip maps
-
- call LoadData
- call update_full ;<<<<
- call OneFrame
- FLASH_ON 16,segPalette
- jmp next_frame
- all_done: ret
- MainLoop ENDP
-
- ;; Beginning code -- Leaves text mode (saving the text screen) via
- ;; a fade. It loads the map data and draws one
- ;; frame before it fades on.
- Beginning PROC near
- NEW_PAL segTextPal
- PAL_SAVE segTextPal
- FADE_OFF 1,segTextPal
- call SaveVideo
- MODEX_START ; 320x200 Mode X graphics mode
- PAL_BLACK
-
- call LoadData ; This call will change...
-
- call update_full ;<<<<
- call OneFrame
- FADE_ON 1,segPalette
- ret
- Beginning ENDP
-
- ;; Ending code -- restore to text mode via a flash
- Ending PROC near
- FLASH_OFF 8,segPalette
- call RestoreVideo
- FLASH_ON 8,segTextPal
- ret
- Ending ENDP
-
- .data
-
- .stack 2048
-
- END Initialize